package com.unione.cloud.ums.model;
import java.util.Date;

import org.beetl.sql.annotation.entity.Table;
import org.beetl.sql.mapper.annotation.SqlResource;
import org.springframework.format.annotation.DateTimeFormat;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.unione.cloud.beetsql.annotation.DataPermis;
import com.unione.cloud.beetsql.annotation.KeyWords;
import com.unione.cloud.core.model.Pojo;
import com.unione.cloud.core.model.Validator;

import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;

/**
 * @标题 	UmsMessage Entity
 * @描述	统一消息：消息
 * @作者	Unione Cloud CodeGen
 * @日期	2025-06-19 08:40:46
 * @版本	1.0.0
 **/
@Data
@Builder
@DataPermis
@SqlResource("ums.UmsMessage")
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
@Table(name="ums_message")
public class UmsMessage extends Pojo {
	/**
	* 模板表ID
	*/
	@Schema(title="模板表ID",description="长度为：19")
	private Long tmplId;
	/**
	* 分类ID
	*/
	@Schema(title="分类ID",description="长度为：19")
	@NotNull(message = "分类不能为空",groups = {Validator.save.class,Validator.update.class})
	private Long categoryId;
	/**
	* 类别 notice：通知，msg：消息
	*/
	@Schema(title="类别，字典UMSTYPES notice：通知，msg：消息",description="长度为：10")
	@NotNull(message = "类别不能为空",groups = {Validator.save.class,Validator.update.class})
	@NotBlank(message = "类别不能为空",groups = {Validator.save.class,Validator.update.class})
	private String types;
	/**
	* 标题
	*/
	@KeyWords
	@Schema(title="标题",description="长度为：250")
	@NotNull(message = "标题不能为空",groups = {Validator.save.class,Validator.update.class})
	@NotBlank(message = "标题不能为空",groups = {Validator.save.class,Validator.update.class})
	private String title;
	/**
	* 内容html
	*/
	@Schema(title="内容html",description="长度为：65535")
	private String bodyHtml;
	/**
	* 内容text
	*/
	@KeyWords
	@Schema(title="内容text",description="长度为：65535")
	@NotNull(message = "内容text不能为空",groups = {Validator.save.class,Validator.update.class})
	@NotBlank(message = "内容text不能为空",groups = {Validator.save.class,Validator.update.class})
	private String bodyText;
	/**
	* 来源名称，字典UMSMSGFROM 
	*/
	@Schema(title="来源名称，字典UMSMSGFROM ",description="长度为：50")
	@NotNull(message = "消息来源不能为空",groups = {Validator.save.class,Validator.update.class})
	@NotBlank(message = "消息来源不能为空",groups = {Validator.save.class,Validator.update.class})
	private String fromId;
	/**
	* 需要用户进行手动确认  0:不需要 1:需要
	*/
	@Schema(title="需要用户进行手动确认  0:不需要 1:需要",description="长度为：10")
	private Integer isConfirm;
	/**
	* 确认类型 1:只有确认按钮 2:拒绝/接受
	*/
	@Schema(title="确认类型,字典UMSCONFIRMTYPE 1:只有确认按钮 2:拒绝/接受",description="长度为：10")
	private Integer confirmType;
	/**
	* 业务ID
	*/
	@Schema(title="业务ID",description="长度为：100")
	private String bizId;
	/**
	* 业务参数,eg:name=zs&sex=1
	*/
	@Schema(title="业务参数,eg:name=zs&sex=1",description="长度为：500")
	private String bizParam;
	/**
	* 优先级，字典UMSMSGPRIORITY 1：一级，2：二级，3：三级，4：四级
	*/
	@Schema(title="优先级，字典UMSMSGPRIORITY 1：一级，2：二级，3：三级，4：四级",description="长度为：10")
	private Integer priority;
	/**
	* 发布时间
	*/
	@Schema(title="发布时间",description="长度为：19")
	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss")
	private Date publicDate;
	/**
	* 下线时间
	*/
	@Schema(title="下线时间",description="长度为：19")
	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss")
	private Date offlineDate;

}
